{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Cluster-based Local Outlier Factor (CBLOF)\n",
    "\n",
    "This is based on the paper [Discovering Cluster-based Local Outliers](https://www.sciencedirect.com/science/article/abs/pii/S0167865503000035) along with [pyod python package](https://pyod.readthedocs.io/) and [Anomaly Detection for Dummies](https://towardsdatascience.com/anomaly-detection-for-dummies-15f148e559c1).\n",
    "\n",
    "In the pyod package, a class named CBLOF is provided and the source code is [here](https://pyod.readthedocs.io/en/latest/_modules/pyod/models/cblof.html). I will compare the code with the paper."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "To understand the algorithm, let's first look at the following picture.\n",
    "\n",
    "![large small clustarts](images/large_small_clusters.png)\n",
    "\n",
    "In this picture, we have four clusters. $C_1$(Cluster 1) and $C_3$ are small clusters while $C_2$ and $C_4$ large clusters. Any point belongs to one of the four clusters.\n",
    "\n",
    "The intuition of this algorithm is that: the inliers are in the large groups and outliers in the small groups. If a point is close to any of the large cluster centers, it is considered as inliers. If a point is far away from even the closest cluster center, it is considered as an outlier."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Find Large and Small Clusters\n",
    "\n",
    "We denote the side of a cluster as $|C|$. If we sort the clusters from large to small in size. We will have : \n",
    "\n",
    "$$ |C_1|\\ge|C_2|\\ge|C_3|\\ge...\\ge|C_k|$$\n",
    "\n",
    "**The Majority**\n",
    "\n",
    "Two criteria are used to decide the boundary between large and small clusters. The first is to count the points. The large clusters must cover the majority of the points. We add clusters to the large clusters list from the largest to the smallest one. Each time we add one cluster and check if the majority has included. We use $\\alpha (0.5<\\alpha<1.0)$ to configure the majority rate. Thus we have:\n",
    "\n",
    "$$|C_1| + |C_2| + ... + |C_b| \\ge \\alpha * |D|$$\n",
    "\n",
    "In the pdod package the default for $\\alpha$ is 0.9.\n",
    "\n",
    "**Sudden Shrink**\n",
    "\n",
    "The other way, I call it sudden shrink. It is to measure the sudden change in cluster size. \n",
    "\n",
    "$$|C_b|/|C_{b+1}| \\ge \\beta$$. \n",
    "\n",
    "In the pdod package, the default for $\\beta$ is 5.\n",
    "\n",
    "If one condition is met, $b$ is found. If I were to implement the algorithm, I would iterate from the largest cluster to the smallest. I will quit and return $b$ when one of the conditions is met. \n",
    "\n",
    "The pyod package implemented differently. It tries to find a $b$ satisfies both criteria first. If not find, it will use $\\alpha$ only, then $\\beta$ only."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Cluster-base Local Outlier Factor\n",
    "\n",
    "**Euclidean Distance without Weights**\n",
    "\n",
    "The factor is the distance between any point to its closest large cluster center. Because we already know some of the points belong to one of the large clusters, so we don't have to calculate which cluster center is the closest. Thus we have:\n",
    "\n",
    "$$\n",
    "Factor =  min(distance(t, c))\n",
    "$$\n",
    "\n",
    "$c$ is the center of cluster $C_i$, $C_i$ is a large cluster.\n",
    "\n",
    "The pyod package uses the euclidean distance. \n",
    "\n",
    "**Weights**\n",
    "\n",
    "The weight of a point is the size of the closest large cluster. \n",
    "\n",
    "Here is what confused me.\n",
    "\n",
    "When pyod does not use weights. It uses distance to measure if a point is abnormal. The larger the distance, the more likely it is abnormal. But when weights are used, the points in the small clusters will be much smaller because they have a small weight. I looked into the paper. The paper says here distance is the similarity measure used in the cluster algorithm. And the in cluster algorithm used in the paper, The larger the similarity, the more likely it is put in the a cluster. \n",
    "\n",
    "I think the paper has confused the pdod auther. In the paper it used the *distance* to calculate factor but actually it is not distance, because it says that the distance is the similarity measure used in the cluster algorithm. So the paper means that:\n",
    "\n",
    "$$Factor = max(similarity(t, c))$$\n",
    "\n",
    "$c$ is the center of cluster $C_i$, $C_i$ is a large cluster."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Explore the Data\n",
    "\n",
    "Here I reuse the data used in Susan Li's article. If my implement is right, I should produce an identical picture. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "from scipy.spatial.distance import cdist\n",
    "from sklearn.cluster import KMeans\n",
    "import pandas as pd\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "import seaborn as sns\n",
    "import matplotlib\n",
    "from sklearn import __version__ as sklearn_version"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "1.0.5\n",
      "0.23.1\n"
     ]
    }
   ],
   "source": [
    "print(pd.__version__)\n",
    "print(sklearn_version)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [],
   "source": [
    "df = pd.read_excel(\"Superstore.xls\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "sns.regplot(x=\"Sales\", y=\"Profit\", data=df)\n",
    "sns.despine();"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [],
   "source": [
    "n_points = df.shape[0]\n",
    "x1=df['Sales'].values\n",
    "x2=df['Profit'].values\n",
    "x1 = x1 - x1.min()\n",
    "x1 = x1/x1.max()\n",
    "\n",
    "x2 = x2 - x2.min()\n",
    "x2 = x2/x2.max()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [],
   "source": [
    "X=[[a,b] for (a,b) in zip(x1, x2)]\n",
    "X=np.array(X)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# KMeans\n",
    "\n",
    "Here I use KMean, the same as pyod. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [],
   "source": [
    "km = KMeans(n_clusters=8)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "KMeans()"
      ]
     },
     "execution_count": 22,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "km.fit(X)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [],
   "source": [
    "cluster_sizes = []\n",
    "for label in range(km.n_clusters):\n",
    "    size = sum(km.labels_==label)\n",
    "    cluster_sizes.append(size)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 720x576 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure(figsize=(10,8))\n",
    "for label in range(km.n_clusters):\n",
    "    plt.scatter(x1[km.labels_==label], x2[km.labels_==label], label=f'{label} size: {cluster_sizes[label]}')\n",
    "plt.legend()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "You will see a \"small\" cluster in the leftmost. Don't be confused it is the largest cluster in terms of cluster size. "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Find Large and Small Clusters"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 107,
   "metadata": {},
   "outputs": [],
   "source": [
    "alpha=0.9\n",
    "beta=5\n",
    "n_points_in_large_clusters = int(n_points * alpha)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 108,
   "metadata": {},
   "outputs": [],
   "source": [
    "n_outliers=100"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 109,
   "metadata": {},
   "outputs": [],
   "source": [
    "df_cluster_sizes = pd.DataFrame()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 110,
   "metadata": {},
   "outputs": [],
   "source": [
    "df_cluster_sizes['cluster'] = list(range(8))\n",
    "df_cluster_sizes['size'] = df_cluster_sizes['cluster'].apply(lambda c:cluster_sizes[c])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 111,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>cluster</th>\n",
       "      <th>size</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0</td>\n",
       "      <td>7884</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>6</td>\n",
       "      <td>1518</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>2</td>\n",
       "      <td>449</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>7</td>\n",
       "      <td>106</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>3</td>\n",
       "      <td>19</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>5</td>\n",
       "      <td>11</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "      <td>6</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>4</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   cluster  size\n",
       "0        0  7884\n",
       "6        6  1518\n",
       "2        2   449\n",
       "7        7   106\n",
       "3        3    19\n",
       "5        5    11\n",
       "1        1     6\n",
       "4        4     1"
      ]
     },
     "execution_count": 111,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df_cluster_sizes.sort_values(by=['size'], ascending=False, inplace=True)\n",
    "df_cluster_sizes"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 112,
   "metadata": {},
   "outputs": [],
   "source": [
    "small_clusters=[]\n",
    "large_clusters=[]\n",
    "count=0\n",
    "for _, row in df_cluster_sizes.iterrows():\n",
    "    count+=row['size']\n",
    "    if count<n_outliers:\n",
    "        small_clusters.append(row['cluster'])\n",
    "    else:\n",
    "        large_clusters.append(row['cluster'])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 127,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "-----------iterration 0--------------\n",
      "7884\n",
      "5.1936758893280635\n",
      "beta\n",
      "False True\n",
      "-----------iterration 1--------------\n",
      "9402\n",
      "3.3808463251670378\n",
      "True False\n",
      "-----------iterration 2--------------\n",
      "9851\n",
      "4.235849056603773\n",
      "True False\n",
      "-----------iterration 3--------------\n",
      "9957\n",
      "5.578947368421052\n",
      "beta\n",
      "True True\n",
      "-----------iterration 4--------------\n",
      "-----------iterration 5--------------\n",
      "-----------iterration 6--------------\n",
      "-----------iterration 7--------------\n"
     ]
    }
   ],
   "source": [
    "large_clusters=[]\n",
    "small_clusters=[]\n",
    "found_b= False\n",
    "count=0\n",
    "clusters = df_cluster_sizes['cluster'].values\n",
    "n_clusters = len(clusters)\n",
    "sizes = df_cluster_sizes['size'].values\n",
    "\n",
    "for i in  range(n_clusters):\n",
    "    print(f\"-----------iterration {i}--------------\")\n",
    "    satisfy_alpha=False\n",
    "    satisfy_beta=False\n",
    "    if found_b:\n",
    "        small_clusters.append(clusters[i])\n",
    "        continue\n",
    "\n",
    "    count+=sizes[i]\n",
    "    print(count)\n",
    "    if count>n_points_in_large_clusters:\n",
    "        satisfy_alpha=True\n",
    "\n",
    "    print(sizes[i]/sizes[i+1])\n",
    "    if i<n_clusters-1 and sizes[i]/sizes[i+1]>beta:\n",
    "        print(\"beta\")\n",
    "        satisfy_beta=True\n",
    "        \n",
    "    print(satisfy_alpha, satisfy_beta)\n",
    "    if satisfy_alpha and satisfy_beta:\n",
    "        found_b=True\n",
    "        \n",
    "    large_clusters.append(clusters[i])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 128,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "8994"
      ]
     },
     "execution_count": 128,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "n_points_in_large_clusters"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 115,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[3, 5, 1, 4]"
      ]
     },
     "execution_count": 115,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "small_clusters"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 116,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[0, 6, 2, 7]"
      ]
     },
     "execution_count": 116,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "large_clusters"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 117,
   "metadata": {},
   "outputs": [],
   "source": [
    "large_cluster_centers = km.cluster_centers_[large_clusters]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 130,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Plot large and small clusters\n",
    "labels_in_large_clusters = np.zeros((n_points))\n",
    "for large_cluster in large_clusters:\n",
    "    labels_in_large_clusters[km.labels_==large_cluster] = 1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 136,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "we have 37 points in small clusters\n"
     ]
    }
   ],
   "source": [
    "n_points_in_small_clusters=sum(1-labels_in_large_clusters)\n",
    "print(f\"we have {n_points_in_small_clusters:0.0f} points in small clusters\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 137,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 720x576 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure(figsize=(10,8))\n",
    "plt.scatter(x1[labels_in_large_clusters==1], x2[labels_in_large_clusters==1], label=f'large clusters')\n",
    "plt.scatter(x1[labels_in_large_clusters==0], x2[labels_in_large_clusters==0], label=f'small clusters')\n",
    "plt.legend()\n",
    "plt.title(\"Points in large and small clusters\")\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We see that points in small clusters is less then the total contaminated points(100). Such that some points in the large clusters will be categoried as outliers. "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Factor"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 119,
   "metadata": {},
   "outputs": [],
   "source": [
    "def get_distance(a,b):\n",
    "    return np.sqrt((a[0]-b[0])**2 + (a[1]-b[1])**2)\n",
    "\n",
    "def decision_function(X, labels):\n",
    "    n=len(labels)\n",
    "    distances=[]\n",
    "    for i in range(n):\n",
    "        p=X[i]\n",
    "        label = labels[i]\n",
    "        if label in large_clusters:\n",
    "            center = km.cluster_centers_[label]\n",
    "            d=get_distance(p, center)\n",
    "        else:\n",
    "            d=None\n",
    "            for center in large_cluster_centers:\n",
    "                d_temp = get_distance(p, center)\n",
    "                if d is None:\n",
    "                    d=d_temp\n",
    "                elif d_temp<d:\n",
    "                    d=d_temp\n",
    "        distances.append(d)\n",
    "    distances=np.array(distances)\n",
    "    return distances"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 120,
   "metadata": {},
   "outputs": [],
   "source": [
    "distances = decision_function(X, km.labels_)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 124,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "threshold is 0.04487122042446813\n"
     ]
    }
   ],
   "source": [
    "threshold=np.percentile(distances, 99)\n",
    "print(f\"threshold is {threshold}\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 125,
   "metadata": {},
   "outputs": [],
   "source": [
    "anomaly_labels = (distances>threshold)*1"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Plot"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 126,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 576x576 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "xx , yy = np.meshgrid(np.linspace(0, 1, 100), np.linspace(0, 1, 100))\n",
    "X_mash = np.c_[xx.ravel(), yy.ravel()]\n",
    "labels_mash=km.predict(X_mash)\n",
    "Z = decision_function(X_mash, labels_mash)*-1\n",
    "Z = Z.reshape(xx.shape)\n",
    "\n",
    "plt.figure(figsize=(8, 8))\n",
    "plt.contourf(xx, yy, Z, levels=np.linspace(Z.min(), -threshold, 7),cmap=plt.cm.Blues_r)\n",
    "plt.contourf(xx, yy, Z, levels=[-threshold, Z.max(), ],colors='orange')\n",
    "a=plt.contour(xx, yy, Z, levels=[-threshold],linewidths=2, colors='red')\n",
    "b=plt.scatter(x1[anomaly_labels==0], x2[anomaly_labels==0], c='white', s=20, edgecolor='k', label='Normal')\n",
    "c=plt.scatter(x1[anomaly_labels==1], x2[anomaly_labels==1], c='black', s=20, label='Anormaly')\n",
    "plt.legend([a.collections[0], b,c], ['learned decision function', 'inliers','outliers'],\n",
    "           prop=matplotlib.font_manager.FontProperties(size=20),loc='lower right') \n",
    "plt.xlim((0, 1))\n",
    "plt.ylim((0, 1))\n",
    "plt.title('Cluster-based Local Outlier Factor (CBLOF)')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Use Weights\n",
    "\n",
    "We first multiply it."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "80.33156875874546\n",
      "Anormalies: 100\n"
     ]
    }
   ],
   "source": [
    "def get_size(cluster_index):\n",
    "    return cluster_sizes[cluster_index]\n",
    "weights=list(map(get_size, km.labels_))\n",
    "weights=np.array(weights)\n",
    "\n",
    "new_distances = distances * weights\n",
    "new_threshold = np.percentile(new_distances, 99)\n",
    "print(new_threshold)\n",
    "\n",
    "new_anomaly_labels = (new_distances>new_threshold)*1\n",
    "print(f\"Anormalies: {sum(new_anomaly_labels)}\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 576x576 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "xx , yy = np.meshgrid(np.linspace(0, 1, 100), np.linspace(0, 1, 100))\n",
    "X_mash = np.c_[xx.ravel(), yy.ravel()]\n",
    "labels_mash=km.predict(X_mash)\n",
    "weights=list(map(get_size, labels_mash))\n",
    "Z = decision_function(X_mash, labels_mash)*-1\n",
    "Z = Z * weights\n",
    "Z = Z.reshape(xx.shape)\n",
    "\n",
    "plt.figure(figsize=(8, 8))\n",
    "plt.contourf(xx, yy, Z, levels=np.linspace(Z.min(), -new_threshold, 7),cmap=plt.cm.Blues_r)\n",
    "plt.contourf(xx, yy, Z, levels=[-new_threshold, Z.max(), ],colors='orange')\n",
    "a=plt.contour(xx, yy, Z, levels=[-new_threshold],linewidths=2, colors='red')\n",
    "b=plt.scatter(x1[new_anomaly_labels==0], x2[new_anomaly_labels==0], c='white', s=20, edgecolor='k', label='Normal')\n",
    "c=plt.scatter(x1[new_anomaly_labels==1], x2[new_anomaly_labels==1], c='black', s=20, label='Anormaly')\n",
    "plt.legend([a.collections[0], b,c], ['learned decision function', 'inliers','outliers'],\n",
    "           prop=matplotlib.font_manager.FontProperties(size=20),loc='lower right') \n",
    "plt.xlim((0, 1))\n",
    "plt.ylim((0, 1))\n",
    "plt.title('Cluster-based Local Outlier Factor (CBLOF)')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Fix Weights\n",
    "We can see that this is totally wrong.\n",
    "\n",
    "What if we devide it?"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 46,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.00026142180406247146\n",
      "Anormalies: 100\n"
     ]
    }
   ],
   "source": [
    "def get_size(cluster_index):\n",
    "    return cluster_sizes[cluster_index]\n",
    "weights=list(map(get_size, km.labels_))\n",
    "weights=np.array(weights)\n",
    "\n",
    "new_distances = distances / weights\n",
    "new_threshold = np.percentile(new_distances, 99)\n",
    "print(new_threshold)\n",
    "\n",
    "new_anomaly_labels = (new_distances>new_threshold)*1\n",
    "print(f\"Anormalies: {sum(new_anomaly_labels)}\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 47,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 576x576 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "xx , yy = np.meshgrid(np.linspace(0, 1, 100), np.linspace(0, 1, 100))\n",
    "X_mash = np.c_[xx.ravel(), yy.ravel()]\n",
    "labels_mash=km.predict(X_mash)\n",
    "weights=list(map(get_size, labels_mash))\n",
    "Z = decision_function(X_mash, labels_mash)*-1\n",
    "Z = Z / weights\n",
    "Z = Z.reshape(xx.shape)\n",
    "\n",
    "plt.figure(figsize=(8, 8))\n",
    "plt.contourf(xx, yy, Z, levels=np.linspace(Z.min(), -new_threshold, 7),cmap=plt.cm.Blues_r)\n",
    "plt.contourf(xx, yy, Z, levels=[-new_threshold, Z.max(), ],colors='orange')\n",
    "a=plt.contour(xx, yy, Z, levels=[-new_threshold],linewidths=2, colors='red')\n",
    "b=plt.scatter(x1[new_anomaly_labels==0], x2[new_anomaly_labels==0], c='white', s=20, edgecolor='k', label='Normal')\n",
    "c=plt.scatter(x1[new_anomaly_labels==1], x2[new_anomaly_labels==1], c='black', s=20, label='Anormaly')\n",
    "plt.legend([a.collections[0], b,c], ['learned decision function', 'inliers','outliers'],\n",
    "           prop=matplotlib.font_manager.FontProperties(size=20),loc='lower right') \n",
    "plt.xlim((0, 1))\n",
    "plt.ylim((0, 1))\n",
    "plt.title('Cluster-based Local Outlier Factor (CBLOF)')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "It looks right but the shape is strange. I think maybe KMean is not suitable for weights. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "# so i think they should modify the following code\n",
    "if self.use_weights:\n",
    "    # Weights are calculated as the number of elements in the cluster\n",
    "    scores = scores * self.cluster_sizes_[labels]\n",
    "# to   \n",
    "if self.use_weights:\n",
    "    # Weights are calculated as the number of elements in the cluster\n",
    "    scores = scores / self.cluster_sizes_[labels]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.3"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
